package com.icinfo.cloud.provider.punish.api.service;

import com.icinfo.cloud.provider.punish.api.dto.*;
import com.icinfo.cloud.provider.punish.api.vo.*;

import java.util.List;

/**
 * @author shishengyao
 * @description
 * @date 2022/7/18
 */
public interface ICaseInfoShareService {
    /**
     * 【V1.3.2】描述：获取案件信息分页列表
     *
     * @param pageQueryDto 分页查询请求参数
     * @return {@link List<CaseInfoShareVo> }
     * @author shishengyao
     * @date 2022/07/18
     */
    List<CaseInfoShareVo> getCaseInfoPageList(CaseInfoSharePageQueryDto pageQueryDto);

    /**
     * 【V1.3.2】描述：根据案件Id查询当事人信息
     *
     * @param caseId 用例id
     * @return {@link List<CasePartyInfoShareVo> }
     * @author shishengyao
     * @date 2022/07/18
     */
    List<CasePartyInfoShareVo> getCasePartyListByCaseId(String caseId);


    /**
     * 描述： 根据承办人查询案件记录(分页)
     *
     * @author: zhengqiang
     * @date: 2022/9/7
     * @param: pageQueryDto
     * @return {@link List<  CaseInfoRecordVo >}
     **/
    List<CaseInfoRecordVo> getCaseInfoListByUser(CaseInfoRecordPageQueryDto pageQueryDto);

    /***
     * 描述： 根据案件id获取分当事人案件详情 (事项抄告)
     *
     * @author: zhengqiang
     * @date: 2022/10/19
     * @param: caseId
     * @return {@link List<  PartiesCaseInfoOfExtVo >}
     **/
    List<PartiesCaseInfoOfExtVo> getPartiesCaseInfoByCaseIdOfExt(String caseId);


    /**
     * 描述： 根据办案人员获取办案中的案件记录(分页) (联合会商、争议裁决调用)
     *
     * @author: zhengqiang
     * @date: 2022/10/19
     * @param: pageQueryDto
     * @return {@link List< CaseInfoRecordOfExtVo>}
     **/
    List<CaseInfoRecordOfExtVo> getCaseInfoPageRecordByUserOfExt(CaseInfoRecordPageQueryOfExtDto pageQueryDto);

    /**
     * 描述： 根据案件id获取案件记录 (联合会商、争议裁决调用)
     *
     * @author: zhengqiang
     * @date: 2022/10/19
     * @param: caseId
     * @return {@link CaseInfoRecordOfExtVo}
     **/
    CaseInfoRecordOfExtVo getCaseInfoRecordByCaseIdOfExt(String caseId);

    /**
     * 描述： 根据主体身份证或代码社会信用代码查询处罚记录(分页) (信息协助)
     *
     * @author: zhengqiang
     * @date: 2022/10/19
     * @param: pageQueryDto
     * @return {@link List< PartiesPunishRecordOfExtVo>}
     **/
    List<PartiesPunishRecordOfExtVo> getPartiesPunishRecordByIdCodeOfExt(PartiesPunishRecordPageQueryOfExtDto pageQueryDto);

    /***
     * 描述： 根据办案人员获取办案中的案源记录(分页)
     *
     * @author: zhengqiang
     * @date: 2023/2/20
     * @param: pageQueryDto
     * @return {@link List< CaseSourceInfoRecordOfExtVo>}
     **/
    List<CaseSourceInfoRecordOfExtVo> getCaseSourceInfoPageRecordByUserOfExt(CaseSourceInfoRecordPageQueryOfExtDto pageQueryDto);

    /**
     * 描述： 根据案件id查询处罚决定信息
     *
     * @author: zhengqiang
     * @date: 2023/3/1
     * @param: caseId
     * @return {@link List< CasePunishDecisionInfoVo>}
     **/
    List<CasePunishDecisionInfoVo> getCasePunishDecisionInfoByCaseId(String caseId);
    /**
     *根据caseId获取案件条线信息与案文书抬头
     * @author liyafeng
     * @date 2023/3/8
      * @param caseId
     * @return {@link CaseLineStandardNameInfoVo}
     */
    CaseLineStandardNameInfoVo getCaseLineStandardNameInfo(String caseId);

    /**
     * 描述： 根据检查id查询案件信息列表
     *
     * @author: zhengqiang
     * @date: 2023/3/7
     * @param: checkIds 多个id以逗号分隔
     * @return {@link List< CheckTransferCaseRecordVo>}
     **/
    List<CheckTransferCaseRecordVo> getCheckTransferCaseListByCheckIds(String checkIds);

    /**
     * 案件信息查询(协同调用)
     * @param caseDto
     * @return
     */
    List<AllCaseInfoOfExtVo> getAllCaseInfoListOfExt(AllCaseInfoQueryOfExtDto caseDto);
}
